using System.ComponentModel.DataAnnotations.Schema;
using System.Data.Entity.ModelConfiguration;

//Importamos
using EventSys.BussinesEntities;

namespace EventSys.Repository.Mapping
{
    public class InscripcionMap : EntityTypeConfiguration<Inscripcion>
    {
        public InscripcionMap()
        {
            // Primary Key
            this.HasKey(t => t.idInscripcion);

            // Properties
            // Table & Column Mappings
            this.ToTable("Inscripcion");
            this.Property(t => t.idInscripcion).HasColumnName("idInscripcion");
            this.Property(t => t.idParticipante).HasColumnName("idParticipante");
            this.Property(t => t.Monto).HasColumnName("Monto");
            this.Property(t => t.TotalInscritos).HasColumnName("TotalInscritos");
            this.Property(t => t.idFormaPago).HasColumnName("idFormaPago");
            this.Property(t => t.idActividad).HasColumnName("idActividad");
            this.Property(t => t.idEvento).HasColumnName("idEvento");
            this.Property(t => t.idAsistencia).HasColumnName("idAsistencia");

            // Relationships
            this.HasMany(t => t.Participantes)
                .WithMany(t => t.Inscripcions)
                .Map(m =>
                {
                    m.ToTable("InscripcionParticipante");
                    m.MapLeftKey("idInscripcion");
                    m.MapRightKey("idParticipante");
                });

            this.HasOptional(t => t.Actividad)
                .WithMany(t => t.Inscripcions)
                .HasForeignKey(d => d.idActividad);
            this.HasOptional(t => t.CotrolAsistencia)
                .WithMany(t => t.Inscripcions)
                .HasForeignKey(d => d.idAsistencia);
            this.HasOptional(t => t.Evento)
                .WithMany(t => t.Inscripcions)
                .HasForeignKey(d => d.idEvento);
            this.HasOptional(t => t.FormaPago)
                .WithMany(t => t.Inscripcions)
                .HasForeignKey(d => d.idFormaPago);

        }
    }
}

